#!/usr/bin/env python3
"""
测试进度条功能
快速验证tqdm进度条是否正常工作
"""
import time
from tqdm import tqdm

def test_basic_progress():
    """测试基础进度条"""
    print("\n🧪 测试1: 基础进度条")
    for i in tqdm(range(10), desc="基础测试", unit="步", ncols=100):
        time.sleep(0.1)
    print("✅ 基础进度条测试完成\n")

def test_nested_progress():
    """测试嵌套进度条(模拟任务和rollout)"""
    print("🧪 测试2: 嵌套进度条(模拟实验流程)")
    tasks = [0, 1, 2]
    
    for task_id in tqdm(tasks, desc="总体进度", unit="任务", position=0, ncols=100):
        tqdm.write(f"\n📋 任务 {task_id}")
        
        # 模拟MCTS rollout
        tqdm.write("  🔍 MCTS Rollout")
        for rollout in tqdm(range(4), desc="  MCTS", unit="step", position=1, leave=False, ncols=100):
            time.sleep(0.1)
        tqdm.write("  ✓ MCTS完成")
        
        # 模拟Evolutionary
        tqdm.write("  🧬 Evolutionary")
        for gen in tqdm(range(3), desc="  进化代数", unit="gen", position=1, leave=False, ncols=100):
            time.sleep(0.1)
            tqdm.write(f"    第{gen+1}代最佳适应度: {0.5 + gen*0.1:.2f}")
        tqdm.write("  ✓ Evolutionary完成")
        
        tqdm.write(f"📊 任务{task_id}完成\n")
    
    print("✅ 嵌套进度条测试完成\n")

def test_tqdm_write():
    """测试tqdm.write避免进度条混乱"""
    print("🧪 测试3: tqdm.write输出")
    for i in tqdm(range(5), desc="写入测试", ncols=100):
        tqdm.write(f"  → 处理步骤 {i+1}")
        time.sleep(0.2)
    print("✅ tqdm.write测试完成\n")

if __name__ == "__main__":
    print("="*100)
    print("🎯 进度条功能测试")
    print("="*100)
    
    test_basic_progress()
    test_nested_progress()
    test_tqdm_write()
    
    print("="*100)
    print("✅ 所有测试完成!")
    print("="*100)
    print("\n💡 提示:")
    print("  - 进度条使用 tqdm 库")
    print("  - 嵌套进度条会显示在不同行")
    print("  - tqdm.write() 避免输出与进度条混乱")
    print("  - 实际实验中你将看到:")
    print("    ✓ 任务级总进度条")
    print("    ✓ MCTS rollout进度条")
    print("    ✓ Evolutionary代数进度条")
    print("    ✓ 每个步骤的简洁状态信息")
